package com.xbongbong.paas.pojo.dto;

import com.xbongbong.paas.enums.FieldTypeEnum;
import com.xbongbong.paas.pojo.AttrValuePojo;
import com.xbongbong.paas.field.FieldAttrEntity;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
import java.util.Map;

/**
 * @author: wufeng
 * @date: 2018/9/11 16:44
 * @desrcption: 批量更新
 */
@Getter
@Setter
@ToString
public class FormDataUpdateBatchDTO extends BaseDTO {

    private static final long serialVersionUID = -3256869196255075475L;
    /**
     * 应用id
     */
    @NotNull(message = "{dto.msg.formDataUpdateBatch.appId.NotNull}")
    private Long appId;

    @NotNull(message = "{dto.msg.formDataUpdateBatch.menuId.NotNull}")
    private Long menuId;

    /**
     * 表单id
     */
    @NotNull(message = "{dto.msg.formDataUpdateBatch.formId.NotNull}")
    private Long formId;


    @NotNull(message = "{dto.msg.formDataUpdateBatch.dataIdList.NotNull}")
    @Size(max = 100, min = 1, message = "{dto.msg.formDataUpdateBatch.dataIdList.Size}")
    private List<Long> dataIdList;
    /**
     * 批量更新的字段
     */
    private List<AttrValuePojo> fieldEditedList;
    /**
     * 字段类型
     */
    @NotNull(message = "{dto.msg.formDataUpdateBatch.fieldType.NotNull}")
    private Integer fieldType;

    /**
     * saas标识
     * @see com.xbongbong.pro.enums.SaasMarkEnum
     */
    @NotNull(message = "saasMark {javax.validation.constraints.NotNull.message}" )
    private Integer saasMark;

    /**
     * 业务类型
     * @see com.xbongbong.saas.enums.XbbRefTypeEnum
     */
    @NotNull(message = "businessType {javax.validation.constraints.NotNull.message}" )
    private Integer businessType;

    /**
     * 业务类型（比如公海池过来的）
     * @see com.xbongbong.saas.enums.XbbRefTypeEnum
     */
    private Integer subBusinessType;


    /**
     * 日志记录更新的字段
     */
    private List<AttrValuePojo> logFieldEditedList;


    public Integer isBusinessRule;

    /**
     * 是否是批量操作 0 不是  1 是   （日志需要区分是批量编辑还是，单条编辑） 2 标签特殊处理
     */
    private Integer isBatch;

    /**
     * 是否记录动态 0 不记录 1 记录 （调整标签不需要记录）
     */
    private Integer isRecordDynamic;

    /**
     *  是否有依赖字段，前端未传，后端方法判断
     */
    private Boolean isFieldDependence;

    /**
     * 判断编辑的是否含有字段依赖
     * @param explainMap
     */
    public void judgeIsFieldDependence(Map<String, FieldAttrEntity> explainMap) {
        if (explainMap.size() < 2) {
            this.isFieldDependence = false;
            return;
        }
        List<Integer> fieldDependenceTypeList = FieldTypeEnum.getFieldDependenceType();
        for (FieldAttrEntity item : explainMap.values()) {
            if (fieldDependenceTypeList.contains(item.getFieldType())) {
                this.isFieldDependence = true;
                return;
            }
        }
    }

}
